package com.abel.bigwater.dataserver.model.qdies

import com.abel.bigwater.dataserver.model.PacketDataLenException
import io.netty.buffer.ByteBuf

/**
 * D10主动上线参数设置
上位机发送： 帧头 地址 0x39 0x00 校验 帧尾
D10 应 答 ： 帧 头 地 址 0x39 0x03 上 线 时 刻 个 数 上 线 时 刻 1
上线时刻2 校验 帧尾
 */
class DtenAskActiveOnlineData(_len: Int) : D10BaseData(_len) {
    companion object {
        const val MIN_LEN = 1
    }

    override var type = FuncType.AskActiveOnline

    var hourList: ByteArray? = null

    override fun fill(buf: ByteBuf) {
        buf.writeByte(hourList!!.size)
        buf.writeBytes(hourList)
    }

    override fun parse(buf: ByteBuf): Boolean {
        if (buf.readableBytes() < MIN_LEN) {
            throw PacketDataLenException("should contain count of hours")
        }

        buf.duplicate().apply {
            hourList = ByteArray(readByte().toInt())
            readBytes(hourList)
        }

        buf.skipBytes(count())

        return true
    }

    override fun count(): Int = 1 + hourList!!.size
}